常用命令
1 | #下载项目 |
基本命令
1 | #创建并切换分支 |
查看命令
1 | $ git show # 显示某次提交的内容 |
合并分支
1 | git merge <branch> # 将branch分支合并到当前分支 |
远程分支
1 | $ git pull # 抓取远程仓库所有分支更新并合并到本地 |
Git主分支的名字,默认叫做Master。它是自动建立的,版本库初始化以后,默认就是在主分支在进行开发。
别名注册
git ci
相当于git commit
,输入git st
相当于git status
。可以自己注册别名:1
2
3
4$sudo git config --system alias.st status
$sudo git config --system alias.ci commit
$sudo git config --system alias.co checkout
$sudo git config --system alias.br branch
在Git中,用两种方法将两个不同的branch
合并。一种是通过git merge
,一种是通过git rebase
。
与 git merge
不同的是, git rebase
不单单只是将两个不同的branch
合并起来,而是将某一支 branch
基于另一支 branch
的内容合并起来
分支的开发过程中,要经常与主干保持同步。1
2$ git fetch origin
$ git rebase origin/master
合并commit
分支开发完成后,很可能有一堆commit message
,但是合并到主干的时候,往往希望只有一个(或最多两三个)commit message
,这样不仅清晰,
也容易管理。那么,怎样才能将多个commit
合并呢?这就要用到 git rebase
命令。git rebase
是对commit history
的改写。
1 | $ git rebase -i origin/master |
git rebase
命令的i
参数表示互动(interactive),这时git会打开一个互动界面,进行下一步操作。1
2
3
4
5
6pick:正常选中
reword:选中,并且修改提交信息;
edit:选中,rebase时会暂停,允许你修改这个commit(参考这里)
squash:选中,会将当前commit与上一个commit合并
fixup:与squash相同,但不会保存当前commit的提交信息
exec:执行其他shell命令
合并commit
后,就可以推送当前分支到远程仓库了。
1 | $ git push --force origin myfeature |
git push
命令要加上force
参数,因为rebase
以后,分支历史改变了,跟远程分支不一定兼容,有可能要强行推送
当出现no changes added to commit
时如何正确使用git提交命令?
对于这个问题,最好的解决方法就是按如下步骤:1
2
31.到根目录下:git add . ;("."是必须要的)
2.git commit -m "some word"
3.git push -u origin master
上面命令将本地的master
分支推送到origin
主机,同时指定origin
为默认主机,后面就可以不加任何参数使用git push
了。
当出现:changes not staged for commit
1 | sudo rm -Rf .git #强制递归删除 |
git push origin master
的意思就是将本地的master
分支推送到origin主机的master
分支。如果后者不存在,则会被新建。
git push
是上传本地所有分支代码到远程对应的分支上。
当出现nothing to commit, working directory clean
这说明你现在的工作目录相当干净。换句话说,所有已跟踪文件在上次提交后都未被更改过。此外,上面的信息还表明,当前目录下没有出现任何处于未跟踪的新文件,否则 Git 会在这里列出来。最后,该命令还显示了当前所在的分支是 master,这是默认的分支名称,实际是可以修改的