初识Git-一些常用的Git指令

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ky415/article/details/81215244

今天的项目用到了Git,先是要求我们clone远程仓库的工程,然后自己在本地进行修改之后,再提交回远程仓库。
首先贴上Git的工作流程图:
Git流程图
1)clone 项目
在我们想要保存项目的路径下,打开Git bash,输入clone指令,
基本语法是: git clone dest_url, 示例如下:

git clone https://rdc.hand-china.com/gitlab/20685/Git-Test.git

操作完成后,提示如下,由于我 clone的是刚新建的新项目,所以提示我” cloned an empty repository.”
Git-clone
这个时候,再看我们的目标路径,新生成了一个空的Git-Test 工程文件夹,并且有一个隐藏的.git文件夹,作为Git的本地仓库
Git-clone-new file
注:当我们进行首次clone时,若不是clone的公开项目,则会提示我们输入账号和密码(若clone失败,可以尝试先在本地目标文件夹中初始化本地仓库,语法: git init)

2)向本地仓库中添加文件
当完成 clone 后,需要先向本地仓库中添加一下文件,添加完成后才能进行分支的创建,否则会报 fatal: Not a valid object name: ‘master’错误,因为刚创建的git仓库需要在第一次commit之后才会真正建立
语法格式:git add fileName.xx (常用 git add . 表示将所有文件添加至仓库中) , 示例如下
git add .
添加所有文件至本地仓库
添加文件完成后,最好加上本地更新的描述
语法格式:git commit -m”add describe” , 示例如下
git commit -m”Init Local Warehouse After Clone”
添加更新描述
从图中的信息可以看出,我在master分支中创建了 两个 readme文件
注:因为我测试用的远程仓库之创建了一个空文件夹,而git在识别文件时会过滤掉所有的空文件夹,所有我在本地新增了两个readme文件

3)创建本地分支
当我们第一次从远程仓库clone下项目并完成初始化后,往往需要在自己的开发环境中创建本地分支进行开发。并且在本地分支进行的开发工作并不会影响到主分支和其它分支的开发进程。
语法格式:git branch branchName,(当不输入分支名时,为查看所有分支信息)示例如下
git branch test
创建本地分支
从图中可以看出,我新建的两个分支,不过目前仍停留在master分支上(master)

4)切换到本地分支进行开发
完成分支创建后,默认不切换到新创建的分支中,需要进行手动的分支切换,否则仍是在原分支中进行开发
语法格式:git checkout branchName,示例如下
git checkout test
切换到新建分支
从图中可以看出来,此时已经在test分支上了(test),现在所做的所有开发都对主分支没有影响
扩展:git checkout -b branchName 创建分支并切换到新建分支中(若存在同名分支,则会创建失败),示例如下
git checkout -b test1
git checkout -B branchName 创建分支并切换到新建分支中(若存在同名分支,不会创建失败,将会覆盖同名分支),示例如下
git checkout -B test2
创建并切换到新分支的两种方式
从图中可以看出,采用 -b 的方式第二次创建 test2分支时失败了,提示已经存在了“test2”分支,采用 -B 的方式创建 test2分支成功,并提示已重置test2分支

5)合并分支
当某一分支的功能需求开发完成之后,可以将该分支合并至主分支中(合并分支将其它分支合并到当前分支中,若要合并到主分支中需提前切换到主分支)
语法格式:git merge branchName 示例如下
git merge test
合并分支
我在test分支中创建了一个 test.txt 文件,add 和 commit 之后,就只能在 test 分支中才能查看到 test.txt 文件,当我切换到master分支完成合并之后,才能在master分支中查看到 text.txt 文件
注:在分支合并的过程中,很容易就出分支冲突的问题(在不同分支中修改了同名文件,且修改的部分有重合),
两种方式:1)对发生冲突的文件进行手动修改,修改完成后将修改后的文件进行 add 和 commit,即可完成冲突的解决
2)放弃合并,使用 git merge –abort 命令,抛弃合并,并重建合并前的状态,
但是,当合并前若存在未 commit 的文件,那么在合并中被修改的未 commit 的文件将难以被重建
建议:在分支合并 git merge 前,如果仍存在大量未被 commit 的 文件, 可使用 git -stash 将未 commit 的文件暂存,
若合并过程中发生冲突,解决冲突后使用 git stash pop 可以将未commit的文件还原

6)删除分支
对于重复创建,或者已经完成了开发任务的分支可以选择对齐进行删除
语法格式:git branch -d branchName , 示例如下
git branch -d test
删除分支
注意:需要删除已经commit 但是未 合并的分支时,需要用 git branch -D branchName 进行删除
对于,误删除的分支,可以先使用 git log -g 找回之前提交的 commit,
再使用 git branch recover_branch_newBranch commitId 进行回退 示例如下
git log -g
git branch revoery_test 796c1e7eb812beb88d58f7f34135e6bf06470ca7
git checkout revoery_test
恢复误删分支
可以看到恢复的分支里仍然有被删除前的文件信息

7)向远程仓库进行拉取和提交
当你完成了本地功能的开发,或者取得了进展之后,可以向远程仓库进行提交
提交前需要进行pull,将其他人对远程仓库的修改更新至本地,示例如下
语法格式:git pull <远程主机名> <远程分支名>:<本地分支名>
eg:git pull origin master:master
表示将远程的master分支拉回至本地,并于本地的master分支进行合并

完成pull后,即可进行push
语法格式:git push <远程主机名> <本地分支名>:<远程分支名>
eg: git push origin master : master
注:当省略远程分支名时,会将本地分支推送至远程同名分支上,若远程同名分支不存在则会被创建
当省略远程分支和本地分支时,表示将当前分支推送到远程对应分支上,
(第一次推送会提示使用 git push –set-upstream origin branchName 建立远程与本地的追踪关系)
git push origin –delete branchName 表示删除远程的指定分支

猜你喜欢

转载自blog.csdn.net/ky415/article/details/81215244