Windows的Git下载地址:https://git-scm.com/downloads,在这里下载最新版的进行安装即可。
下面我们来说一下Git再Linux的安装过程,要在安装Git其实也非常简单,可以直接使用yum源进行安装,一句命令就搞定了:
sudo yum install git
Git的配置
安装完Git后就开始对Git进行配置操作,配置自己用户名和Email,配置的命令如下:
$ git config --global user.name "lidu" // 用户名
$ git config --global user.email "lidu@example.com" // 填你自己的qq邮箱
配置完信息后,就可以「创建目录,并且初始化自己的本地仓库」了:
$ mkdir github
$ cd github
$ pwd
/e/github
$ git init // 初始化本地仓库
在你的c盘下面有一个.ssh文件夹,进入文件夹里面可以看到有id_rsa.pub和id_rsa两个文件,第一个文件是id_rsa.pub里面的信息是公钥,而第二个文件是私钥。
加入没有这两个文件,可以使用以下命令进行生成:
$ ssh-keygen -t rsa -C "你注册的邮箱"
在当前目录新建一个Git代码库
$ git init
下载一个项目和它的整个代码历史
$ git clone [url]
增加/删除文件中
# 添加指定文件到暂存区
$ git add [file1] [file2] ...
# 添加指定目录到暂存区,包括子目录
$ git add [dir]
# 添加当前目录的所有文件到暂存区
$ git add .
# 添加每个变化前,都会要求确认
# 对于同一个文件的多处变化,可以实现分次提交
$ git add -p
# 删除工作区文件,并且将这次删除放入暂存区
$ git rm [file1] [file2] ...
# 停止追踪指定文件,但该文件会保留在工作区
$ git rm --cached [file]
# 改名文件,并且将这个改名放入暂存区
$ git mv [file-original] [file-renamed]
代码提交
# 提交暂存区到仓库区
$ git commit -m [message]
# 提交暂存区的指定文件到仓库区
$ git commit [file1] [file2] ... -m [message]
# 提交工作区自上次commit之后的变化,直接到仓库区
$ git commit -a
# 提交时显示所有diff信息
$ git commit -v
# 使用一次新的commit,替代上一次提交
# 如果代码没有任何新变化,则用来改写上一次commit的提交信息
$ git commit --amend -m [message]
# 重做上一次commit,并包括指定文件的新变化
$ git commit --amend [file1] [file2] ..
远程同步
$ git remote update --更新远程仓储
# 下载远程仓库的所有变动
$ git fetch [remote]
# 显示所有远程仓库
$ git remote -v
# 显示某个远程仓库的信息
$ git remote show [remote]
# 增加一个新的远程仓库,并命名
$ git remote add [shortname] [url]
# 取回远程仓库的变化,并与本地分支合并
$ git pull [remote] [branch]
# 上传本地指定分支到远程仓库
$ git push [remote] [branch]
# 强行推送当前分支到远程仓库,即使有冲突
$ git push [remote] --force
# 推送所有分支到远程仓库
$ git push [remote] --all
新增与删除分支
1.创建本地分支
$git branch 分支名,
2.切换本地分支
$git checkout 分支名
3.远程分支就是本地分支push到服务器上。比如master就是一个最典型的远程分支(默认)。
$git push origin 分支名
4.远程分支和本地分支需要区分好,所以,在从服务器上拉取特定分支的时候,需要指定远程分支的名字。
$git checkout --track origin/分支名
注意该命令由于带有--track参数,所以要求git1.6.4以上!这样git会自动切换到分支。
5.提交分支数据到远程服务器
$git push origin <local_branch_name>
一般当前如果不在该分支时,使用这种方式提交。如果当前在分支下,也可以直接提交
$git push
6.删除远程分支
$git branch -d <branch_name>
.#删除一个干净的分支(即相对当前分支而言该分支没有新的提交记录)
$git branch -D <branch_name>
.#强制删除一个分支,该分支有没有合并到当前分支的提交记录
注意:删除分支前都需要先切换到其他分支才能进行删除操作
7.查看所有分支是否都pull下来了
可加-r -a -v
$git branch -a
8.刷新分支:
加入服务器的某个分支删除了,但是本地通过Git branch -av还是可以看得到,感觉很烦,通过以下命令就可以更新分支的情况。
$git fetch origin --prune
9.使用merge合并开发分支
$git merge --no-ff -m "msg" <branch_name> #合并分支时禁用Fast forward模式
$git merge 分支名
10.重命名分支
$git branch -m <branch_name> newname
这样就简单的创建自己的Github的仓库了,创建完后就可以把自己的本地仓库文件同步到GitHub中,使用一下命令:
git remote add origin https://github.com/liduchang/redis.git
git push -u origin master(由于新建的GitHub仓库是空的,所以第一次推送master分支时需要加-u参数,以后再推送就不用加了)
Git中代码从低level到高leve的移动主要依靠以下命令:
git reset --files:用本地仓库覆盖暂存区中修改,也就是覆盖最后一次git add的内容。
git reset,可以撤销向暂存区新添加的文件
git reset --hard HEAD,表示回退上一个版本「在Git中HEAD表示当前版本,HEAD表示上一个版本」,若是有多个版本,这样表示就不方便了,可以使用HEAD~10,表示版本的次数
git checkout就表示切换另一条分支的命令
git checkout --files:把文件从暂存区复制到工作区,用于放弃本地的修改。
git checkout HEAD --files:回退最后一次的提交内容。
git status查看文件状态。
git log进行查看Git每一个commit都会有自己的commit的ID
git log --pretty=oneline:直接输出commit的ID,信息比较简短,然后直接指定ID的回退
git diff查看两次提交之间的变动
git rm命令进行删除
代码冲突
在团队中集体使用Git的时候,每个人都提交自己的代码最后合并到主干,总有会push失败的时候,因为push的本质:「就是用你本地仓库的commit记录去覆盖远程仓库的commit记录」。
但是别人提交了一些代码,而你本地并没有这些代码,这样代码就会被覆盖,导致别人的commit的记录就不存在,这个是绝对不允许的。
所以,每次push的时候Git就会检查,若是存在这种情况就是push失败,只要先git pull一下,将本地仓库与远程仓库先合并一下,最后push就可以成功了,若是文件中已经存在在冲突代码,只要打开文件重新解决一下冲突即可。