(本文内容在Windows环境下下进行)
关于Git
- 安装Git
Windows下安装Git可以到此下载【此处需要科学上网才能下载】安装包,
下载完直接安装。安装过程中,有些选项需要自行斟酌一下,选择属于自己喜欢的才是最好。我是按照以下的选择安装的:
之后你在那个目录下想直接提交,只需右键选择 Git Bash Here就直接可以在当前目录下工作。 - Git基本命令
安装完Git之后就可以开始小试牛刀啦。
打开Git Bash(若你按照我第一点中所选择的选项安装,打开cmd也可以,只不过你要用cmd的一些命令去操作,不能用Linux命令,比如ls,rm,grep等等),输入git查看是否安装成功,成功的话则会出现
这里介绍一下Git一下基本的命令:
git init
到你想做仓库的目录下,git init
一下,就会生成一个.git文件夹,这个文件夹就包含了git的相关信息。
git clone
git clone git@github.com:(GitHub username)/(Repository)
,就可以把GitHub仓库拉到本地。
在这里需要提示一下,你需要在GitHub上配置上你电脑专属的SSH key。SSH是一种加密协议。Linux上都有配置。Git 服务器使用 SSH and GPG Keys来进行授权,所以想要在 GitHub 提交代码的第一步就是要先添加 你自己电脑的SSH 或者 GPG keys 。
在Git Bash中输入ssh-keygen -t rsa
,为了方便,不设密码和换生成路径的话,接下来都直接回车搞定。默认生成路径是c/Documents and Settings/(username)/.ssh
,里面的id_rsa.pub文件保存的就是你电脑的SSH keys。
比如添加SSH keys:在GitHub个人用户设置(Personal settings)中SSH and GPG keys选择 New SSH key,然后复制粘贴上你的key,add进去即可。(注:Title那一栏不需要填)
在Git Bash验证是否添加Keys成功可以使用ssh -T git@github.com
该命令才检验。
git pull
当要更新代码的时候用的就是git pull 命令,可以用git pull origin master
也可以直接用git pull
。
git status
这个命令用来看你现在本地仓库代码的状态,你增删改文件的时候,都可以查得到,若是要提交就要执行下一步操作。
git diff
git diff (file)
是用来看文件内容改了什么内容。除非修改的文件少,否则别单独用git diff
不加文件名这个命令,它会将全部有修改过的文件都给你列出来的。
git diff (branch1) (branch 2)
可以比较两个分支的差异
git add
git add (文件名)
可以把增改的文件变成待commit状态,这个时候颜色会由红变绿,若不想一个个文件地添加,可以用git add .
或者 git add (目录)。
git rm
git rm (文件名)
可以把要删除的文件变成待commit状态。
git reset HEAD (file)
这个命令是当你git add/rm了之后发现加删错了要修改时用的,能回到add/rm状态前。
git commit
在你第一个commit前,你可能需要做一下配置你的姓名和邮箱,因为每条commit都会产生一条log,这条log包含用户名字和邮箱,方便其他人查看和联系,git bash会有提示,用一些两条命令:
git config --global user.name "(name)"
git config --global user.email "(email address)"
以上进行了全局配置,当然有些时候我们的某一个项目想要用特定的邮箱,这个时候只需切换到你的项目,以上代码把 –global 去除,再重新执行一遍就可以了
git commit -m "(commit message)"
commit message就是你本次要提交的信息,最好是简洁明了。
git commit -F (file)
这里的file最好是文本文件,我一般用txt。若文件存放路径不在当前目录下,最好使用图形界面拖动方式把它拖进Terminal,否则手写路径的时候可能会出差错,还有就是可能出现中文目录问题。
git log
git log 可以查看该仓库下本地的所有commit信息。
gitk
gitk 是你可以看做是git log的图形化界面,它方便我们查看提交记录,更方便的是它可以查看每条提交中的每个修改与上一条中的差异。
git reset –hard
当你commit了之后,提交前发现你有个地方忘记修改了,可以要回退重新修改,可以将本次Commit回退掉,比如 git reset --hard f2e08d9ead4a3479dcb812d7c299b5b4e5286894
后面一串数字是你git log后可以看到的每条commit都有的一串SHA1 ID。你想让你本地的代码回退到那条提交那里,就用那条提交的SHA1 ID。(注:在执行该命令前最好是先将你修改的东西备份一下,copy出来,否则你执行完该命令,有得你后悔的。亲测,AS恢复不回来,git checkout
的就可以恢复回来)
git config -l
在push前,可以用git config -l
来查看一下配置,比如远程仓库和本地仓库,有时候push需要用到的地址和本地的不一致,这个时候就需要用该命令查看一下。
git push
commit完要是没啥问题就可以用git push origin master
来提交本地代码的。一般在 push 之前最好先pull一下,pull最好是在修改前,这样不容易产生冲突。
git branch
这个命令在GitHub上面会显的比较重要,在公司中也是,分支在版本控制中是比较重要的部分,若是个人,完全可以在一个主分支中搞完所有事情。闲话不多说,git branch
可以查看当前分支,后面也可以带参数,具体也可以用git branch -help
查看,平时我用的比较多的还是 -a,-D。
git checkout
切换分支的时候可以用git checkout (branch)
,若是想新建并一步切换到新分支可以用git checkout -b (branch)
还可以用来切换tag和commit git checkout v0.0 或 git checkout f2e08d9ead4a3479dcb812d7c299b5b4e5286894
将某个文件还原到和服务器上的一致也可以用git checkout (file)
。
git merge
这个命令要先切换到想要合入其他分支的主分支上,然后执行git merge (another branch)
,merge完之后提交只需直接git push
即可。多开发者开发可能会因为多人在同一文件上修改而导致合入有冲突,最后合入失败。
git rebase
这个命令和git merge
有点类似,只不过,他在合入的时候会考虑到commit的时间顺序,对于对同一个文件的修改提交,用产生冲突的几率会低一点。
git tag
版本控制中就少不了有版本号,每个版本号需要有标签,用git tag
可以查看历史tag记录。若想新建一个直接用git tag (verison)
,当你标记tag的时候用git log 查看commit信息也可以看到tag信息。
文章最后,说一下个人感受吧:我觉得用命令行的话,在Linux上会好一点,在Windows下cmd窗口用起来总是没有shell那种感觉。不过这个得看个人喜好了。