Git 总结系列如下(感兴趣的赏个脸看一下呗):
Git基础–常用命令
Git进阶–版本控制管理
Git进阶–远程仓库,在Github上提交代码
Linux控制台输入 git
如果没有安装则会有以下提示,输入sudo apt-get install git
$ git
The program 'git' is currently not installed. You can install it by typing:
sudo apt-get install git
Windows 系统前往Git官网
下载,或自行搜索下载。下载完成后默认安装即可,安装完成后,打开命令行(windows 下在任意地方右键Git Bash Here 也可以),输入git
,出现以下命令提示即为安装成功($ 符号为Git Bash 自带的符号)
$ git
usage: git [--version] [--help] [-C ] [-c name=value]
[--exec-path[=]] [--html-path] [--man-path] [--info-path]
[-p | --paginate | --no-pager] [--no-replace-objects] [--bare]
[--git-dir=] [--work-tree=] [--namespace=]
<command> [<args>]
These are common Git commands used in various situations:
start a working area (see also: git help tutorial)
clone Clone a repository into a new directory
init Create an empty Git repository or reinitialize an existing one
work on the current change (see also: git help everyday)
add Add file contents to the index
mv Move or rename a file, a directory, or a symlink
reset Reset current HEAD to the specified state
rm Remove files from the working tree and from the index
安装完成后,先全局(--global
)设置一下用户名和用户邮箱,当然也可以在每个仓库内设置,将用户名和邮箱替换为你自己的就行了。
$ git config --global user.name yugengw
$ git config --global user.email yugengw@gmail.com
可以在任意地方设置代码仓库,作为学习,你可以新建一个文件夹,随意创建几个文本文件或复制一些学习资料。首先使用cd
命令定位到你想要新建仓库的文件夹(windows 可以使用文件管理器,到某个文件夹,然后右键Git Bash Here),
比如我现在想要将E盘的learngit 作为git仓库
$ cd e:
$ mkdir learngit
$ cd learngit
使用git init
将次文件夹初始化为一个git 仓库,并创建了master分支。
$ git init
Initialized empty Git repository in E:/learngit/.git/
这样就会生成一个.git
的隐藏文件夹,就是由这个文件夹来管理仓库。
几个概念 :
工作区:我们正在操作的地方,任何修改都是在工作区
暂存区:当我们修改了文件后,并执行git add
命令就将工作区的修改放进暂存区,使工作区与暂存区一致。暂存区可以防止误提交,或将一些不想提交的修改隔绝在工作区里。
放进暂存区之后git commit
就可以将暂存区与上一次git commit
不同的东西提交。
1.git status
最经常用的命令,用来查看仓库状态,工作区的修改,暂存区的修改等,并做一些命令提示。
2.git add
将工作区的修改放进暂存区 .
代表所有文件,使用相对路径/文件名.扩展名
添加某一文件。(对应的有一个命令git rm
用来从暂存区删除文件。当你在工作区删除一个文件后,git rm
到暂存区 相当于 git add
到暂存区。不过前者对应rm操作,后者对应modify操作。结果是一样的 )
3.git commit
将暂存区修改提交
4.git log
查看此分支的每次commit,“532acfca…”这一串是每次commit 的id。
git log --pretty=oneline --abbrev-commit
--pretty=oneline
减少为只剩commit 那一行
--abbrev-commit
将commit id 长度只显示一部分
5.git diff
查看文件修改
直接使用git diff
比较工作区与暂存区文件差异.
首先修改一下文件,然后输入git diff
红色的部分前面有个 - 代表删除东西,绿色的部分前面有个 + 代表增加的东西。
git diff
具体命令:
git diff
比较工作区与暂存区文件差异
git diff <$id1> <$id2>
比较两次提交之间的差异
git diff
在两个分支之间比较
git diff --staged
比较暂存区和版本库差异。
6. git branch
新建分支,master分支理论上是不直接修改的,新功能的开发都是在新建分支上进行的,只有功能开发完成并测试后可以发布了才合并到master分支。
git branch a
新建分支a
git branch -d a
新分支合并到master分支后,已经没用了,就可以删除了。
git branch -D a
新分支若创建错了,或放弃了新功能的开发。想直接删除,使用上一个命令会提示分支尚未被合并,使用-D
强制删除,记住不要删错了哦。
7. git checkout
切换分支
git checkout a
切换到a分支
git checkout -b a
这个命令的意思就是新建一个a分支,并且自动切换到a分支。(新建分支并切换)
8. 合并分支
新分支开发完毕后,就需要提交,然后进行合并,需要先把分支切换回主分支(这里就不截图了,参照上面),然后在主分支执行合并命令。
合并分支的命令有两个 git merge
和git rebase
合并a 分支两种操作
git checkout master
git merge a
git checkout master
git rebase a
merge 直接合并,合并后是分叉的,但有冲突时只需要解决一次。(图片来自 git merge 和 git rebase 小结)
rebase 合并后提交记录为一条线,而且会把你自己分支的commit顶到最前面。但可能得多次解决冲突。
git rebase
两种合并到底用哪种要视团队而定。
不过从知乎上的讨论
来看,可以有一个简单的理解:
个人分支使用 rebase,
公共分支或者说多人协作的分支使用 merge ,
因为rebase会把当前分支的commit,调整到最前端,导致commit顺序混乱。
其他也有不同的理解,详细的可以看上面的知乎连接。
9. git tag
打标签,可以为版本打上标签, 以确定了打标签时刻的软件版本。
git tag v1.0
打上v1.0 标签。
使用git log
可以看到标签已经打上去了
如果要为历史commit 打标签,只需要在后面加上要打标签 的commit id : git tag
eg:git tag v2.0 532acfca
git tag
查看所有标签
git show
查看标签信息
git tag -d
删除标签