[Git & GitHub] git 常用命令

1.  新建repository

本地目录下,在命令行里新建一个代码仓库(repository),且包含一个README.md
touch README.md
git init

将README.md加入到缓存区
git add README.md
(可以用git add --a将所有改动提交到缓存(注意是两个杠))

提交改变,并且附上提交信息"Initial Commit"
git commit -m "Initial Commit"

 

2.  Push提交

加上一个remote的地址,名叫origin,地址是github上的地址(Create a new repo就会有)
因为Git是分布式的,所以可以有多个remote.
git remote add origin https://github.com/XXX(username)/YYYY(projectname).git

将本地内容push到github上的地址上
git push -u origin master
参数-u
用了参数-u之后,以后就可以直接用不带参数的git pull从之前push到的分支来pull。

此时如果origin的master分支上有一些本地没有的提交,push会失败。
所以解决的办法是, 首先设定本地master的上游分支:
git branch --set-upstream-to=origin/master
然后pull:
git pull --rebase
最后再push:
git push

 

3.  Clone操作

使用git clone+github地址的方法,项目默认只有master分支。git branch也只有master
要看所有的分支:git branch -a 或者是 git branch -r
这时候要新建一个分支,叫做dev,基于远程的dev分支:
git checkout -b dev origin/dev

 

4.  分支操作

新建好的代码库有且仅有一个主分支(master),它是自动建立的。
可以新建分支用于开发(新建一个叫develop的分支,基于master分支):
git branch develop master

切换到这个分支:
git checkout develop
现在可以在这个develop分支上做一些改动,并且提交。
注意:切换分支的时候可以发现,在Windows中的repository文件夹中的文件内容也会实时相应改变,变成当前分支的内容。

 

push方法1:

现在如果想直接Push这个develop分支上的内容到github
如果是新建分支第一次push,会提示:
fatal: The current branch develop has no upstream branch.
To push the current branch and set the remote as upstream, use
git push --set-upstream origin develop
输入这行命令,然后输入用户名和密码,就push成功了。
以后的push就只需要输入 git push origin

push方法2:

比如新建了一个叫dev的分支,而github网站上还没有,可以直接:
git push -u origin dev

push方法3:

提交到github的分支有多个,提交时可以用这样的格式:
git push -u origin local:remote
比如:git push -u origin master:master 表明将本地的master分支(冒号前)push到github的master分支(冒号后)。
如果左边不写为空,将会删除远程的右边分支。

 

5.  创建分支的另一种方法

新建一个分支develop2,同时切换到这个分支
用命令: git checkout -b develop2 develop

 

6.  删除分支

git branch #查看所有的分支
git branch -d develop2 #将develop2分支删除
强制删本地:
git branch -D develop2 #强制删除develop2分支
删除远程分支:
git push origin --delete 分支名(remotes/origin/分支名)

 

7.  加Tag

git tag tagname develop
git tag中的两个参数,一个是标签名称,另一个是希望打标签的点develop分支的末梢。

 

8.  合并分支

git checkout master #先转到主分支
git merge --no-ff develop #然后把develop分支merge过来
参数:
不用参数的默认情况下,是执行快进式合并。
使用参数--no-ff,会执行正常合并,在master分支上生成一个新节点。
merge的时候如果遇到冲突,就手动解决,然后重新add,commit即可。

 

9.  合并多个commit

git log --pretty=oneline #查看log
git rebase -i HEAD~3 #从HEAD版本开始往过去数前3个版本(打算合并3个commit)
或者指名要合并的版本之前的版本号
git rebase -i 3a4226b #3a4226b(第4个版本)这个版本是不参与合并的,只合并该版本的之前的3个版本
执行了rebase命令之后,会弹出一个窗口,前几行以pick开头 + 版本号 + commit信息。选择所要合并的commit 前面的 pick 改为 s
之后按Esc键,在输出 :wq 保存退出。
如果有冲突:
git add .
git rebase --continue
如果你想放弃这次压缩的话,执行以下命令:
git rebase --abort

 

10.  分支与master保持同步

git checkout master
git pull
git checkout develop
git merge master

 

11.  fork仓库与远程仓库保持同步

git fetch upstream
git checkout master
git merge upstream/master
另一种方法直接利用pull(fetch+merge)保持同步 git pull upstream master
执行完后push到自己仓库
git push origin master

 

本文原创由`bluetata`发布于blog.csdn.net、转载请务必注明出处。

 

Flag Counter

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章