git的使用
优秀博客地址:https://www.cnblogs.com/tugenhua0707/p/4050072.html
git init 创建全新的仓库
git clone [url]克隆远程仓库
git status 可以检查当前分支的文件状态
整体流程
连接远程仓库
1.git remote add origin ssh地址
第一次全部推送至云端
2.git add .将所有文件添加到暂存区
git commit -m ‘‘可以是中文描述性文字’’ 将分支提交到仓库中 -m表示添加一个提交消息
git push -u origin master 把本地库的内容推送到远程
在本地建立自己的分支
3.git checkout -b ** xxx** 用来切换到xxx分支上 -b用来建立新分支
在本地自己的分支
4.git add .
git commit -m “lll”
git push -u origin xxx 建立云端分支 (在自己本地分支完成代码编写后)
合并分支 推送至云端主分支
5.git checkout master 切换到主分支(本地主分支)
git merge xxx 将xxx分支合并到master主分支上
git push origin(云端已经有xxx分支了 不用-u)直接将其推送到云端
切换到本地自己的分支,拉取云端主分支
6.git checkout xxx
git fetch origin “master”
git merge FETCH_HEAD
第一次添加远程仓库
git remote add origin ssh地址(第一次提交到远程仓库)
git push -u origin master 把本地库的内容推送到远程 然后会弹出验证框 用户名为配置的邮箱
由于远程库是空的,我们第一次推送master分支时,加上了 –u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
从现在起,只要本地作了提交,就可以通过如下命令:git push origin master
git推送
git add . 将所有文件添加到暂存区
git add xxx 将xxx添加到暂存区
git commit -m ‘‘可以是中文描述性文字’’ 将分支提交到仓库中 -m表示添加一个提交消息
git push origin master
git建立分支
git branch 用来看自己属于哪个分支
git checkout -b ** xxx** 用来切换到xxx分支上 -b用来建立新分支
git checkout xxx可切换到xxx分支上
第一次推送
git push -u origin xxx 将本地的分支xxx推送到云端origin这个仓库中 同时以xxx 来进行保存(第一次推送时的特殊命令,云端没有xxx分支)
git合并分支
git checkout master 切换到主分支
git merge xxx 将xxx分支合并到master主分支上
git push origin(云端已经有xxx分支了 不用-u)直接将其推送到云端
git删除分支
git branch -r 列出所有远程分支
git branch -d xxx 删除xxx分支
git push origin – delete xxx git branch -dr [remote/branch] 删除远程分支
版本回退
git log命令显示从最近到最远的显示日志
git reset --hard HEAD^ 那么如果要回退到上上个版本只需把HEAD^ 改成 HEAD^^ 以此类推。那如果要回退到前100个版本的话,使用上面的方法肯定不方便,我们可以使用下面的简便命令操作:git reset --hard HEAD~100 即可
可以通过版本号回退:git reset --hard 版本号
通过如下命令即可获取到版本号:git reflog;
拉取方法(转到自己分支)
git pull origin xxx
多人协作
-
要查看远程库的信息 使用 git remote
-
要查看远程库的详细信息 使用 git remote –v
-
现在我们的小伙伴要在dev分支上做开发,就必须把远程的origin的dev分支到本地来,于是可以使用命令创建本地dev分支:git checkout –b dev origin/dev
-
首先,可以试图用git push origin branch-name推送自己的修改.
-
如果推送失败,则因为远程分支比你的本地更新早,需要先用git pull试图合并。
-
如果合并有冲突,则需要解决冲突,并在本地提交。再用git push origin branch-name推送。
git的常见指令
git config --global 用于全局配置
文件状态
版本控制就是对文件的版本控制,要对文件进行修改、提交等操作,首先要知道文件当前在什么状态,不然可能会提交了现在还不想提交的文件,或者要提交的文件没提交上。
Untracked: 未跟踪, 此文件在文件夹中, 但并没有加入到git库, 不参与版本控制. 通过git add 状态变为Staged.
Unmodify: 文件已经入库, 未修改, 即版本库中的文件快照内容与文件夹中完全一致. 这种类型的文件有两种去处, 如果它被修改, 而变为Modified. 如果使用git rm移出版本库, 则成为Untracked文件
Modified: 文件已修改, 仅仅是修改, 并没有进行其他的操作. 这个文件也有两个去处, 通过git add可进入暂存staged状态, 使用git checkout 则丢弃修改过, 返回到unmodify状态, 这个git checkout即从库中取出文件, 覆盖当前修改 !
Staged: 暂存状态. 执行git commit则将修改同步到库中, 这时库中的文件和本地文件又变为一致, 文件为Unmodify状态. 执行git reset HEAD filename取消暂存, 文件状态为Modified
忽略文件
有些时候我们不想把某些文件纳入版本控制中,比如数据库文件,临时文件,设计文件等
在主目录下建立".gitignore"文件,此文件有如下规则:
忽略文件中的空行或以井号(#)开始的行将会被忽略。
可以使用Linux通配符。例如:星号( *)代表任意多个字符,问号(?)代表一个字符,方括号([abc])代表可选字符范围,大括号({string1,string2,…})代表可选的字符串等。
如果名称的最前面有一个感叹号(!),表示例外规则,将不被忽略。
如果名称的最前面是一个路径分隔符(/),表示要忽略的文件在此目录下,而子目录中的文件不忽略。
如果名称的最后面是一个路径分隔符(/),表示要忽略的是此目录下该名称的子目录,而非文件(默认文件或目录都忽略)。
#为注释
.txt #忽略所有 .txt结尾的文件,这样的话上传就不会被选中!
!lib.txt #但lib.txt除外
/temp #仅忽略项目根目录下的TODO文件,不包括其它目录temp
build/ #忽略build/目录下的所有文件
doc/.txt #会忽略 doc/notes.txt 但不包括 doc/server/arch.txt