- 直接在 建立的仓库下打开git bash 进入相应文件,然后 鼠标右键 选择git bash 即可
- 创建仓库方法: cd进入相应的文件夹, git init 代码即可
- 总结:
1)修改文件是在git的工作区进行修改,不会被git记录
2) git add操作会将工作区的修改上传至缓存区,
3)git commit 会将缓存区上传至版本区。
- 添加文件 git add 文件名.后缀 可以单个文件添加,也可以多个文件添加如 git add file1.txt file2.txt
- 提交文件并添加相应的说明语句: git commit -m "说明语句"
- Git status 查看仓库的文件状态,根据结果可以得知 哪些文件修改过。
- Git diff 查看仓库的修改情况,即和上一次的差异。 如果是git diff 则显示所有文件的修改情况, 如果要查询特定文件的修改情况,则git diff 文件名
- 建议每次修改文件过后都需要执行 git add 操作 git commit -m "说明语句" 当然也可以多次add之后,最后一次性commit 一定要加说明语句。 如果不执行 git add ,则文件的修改即使 执行 git commit也不会被提交。 即只有先执行git add,提交到缓存区,然后执行git commit提交到 版本库,才能生成 commit id ,这样才能进行后续的返回旧版本的操作(返回旧版本操作必须知道commit id,如果不执行 git commit,则无法获得commit id)
- 返回版本:
1)返回之前的特定的文件版本: git reset --hard xxxx xxxx是commit_id ,可以通过 git log查看每一次操作,这里就可以显示出 git commit命令的说明语句的重要性,可以非常清楚的知道每一次对文件做的改动,方便准确返回之前版本。
2)返回上一次 上n次的版本 git reset --hard head^ (上一个版本) git reset --hard head^^(上上个版本) git reset --hard head~n(上n个版本)
3)在电脑关机后,如果想要确切知道之前版本号的 commit id 需要使用 git reflog命令,整个命令记录了记录了每一次的操作指令
- 查看某一个文档的内容 cat 文件名
- Git log 和 git reflog的区别: git log是记录每次 git commit的操作, git reflog则记录了每一次操作 包括 git add 和 git commit
- 使用 q 单词 退出操作命令
- 撤销工作区文件修改命令, git checkout -- 文件名 此操作不能撤销提交到缓存区的修改(即git add的修改)
- 如需撤销提交到缓存区的修改,
1)使用 git reset head 文件名 首先将状态返回到提交缓存区之前的工作区
2)然后 使用 git checkout -- 文件名 撤销工作区的修改
- 删除文件后(无论是在文件管理器通过右键删除 还是使用rm 命令行删除),如果需要将该文件从 版本库删除,则 git rm 然后 git commit
注意删除文件后,一定要在版本库中删除并且提交。否则从本地提交 git push origin master时会将未在版本库中删除的文件一起提交到远程库。
- 删除文件后(无论是在文件管理器通过右键删除 还是使用rm 命令行删除),如果是误删需要将该文件恢复,则 git checkout -- 文件名
- 将多台电脑的sshkey接入到github中,可以使得在多台电脑分别工作,增加便利性
- 将本地的git仓库与远程仓库建立连接 git remote add origin git,然后git Push -u origin master
- 将文件提交到远程服务器 1) git add filename 2) git commit -m "说明语句" 3) git push origin master
- 从github上下载文件到本地, git clone命令
- 如果文件多次更新,可以使用git fetch --all 获得最新文件。 https://blog.youkuaiyun.com/qiusuoxiaozi/article/details/79547762
- 如果只是克隆单个分支, https://blog.youkuaiyun.com/she_lock/article/details/79453484
- 关于git分支命令:
1) 创建分支: git branch (branchname)
2)切换分支 git checkout branchname
3)创建并切换分支 git checkout -b branchname
4)合并分支,在当前分支上合并某分支, 如在master分支上合并另一个一个分支, 首先切换到master分支,git checkout master 然后 git merge branchname
5)删除分支 git branch -d branchname 。如果要删除分支,必须在该分支的落后分支上,即在该分支的前一个分支。只要该分支之前创建的分支,不管多少级别,都可以删除领先分支即后创建的分支。
总结:每次创建新分支,新的分支为领先分支,旧的分支为落后分支。 此种情况是在领先分支上修改文件,然后将将领先分支合并到落后分支上。
6)对于有分支的远程库,首先克隆下master分之后,进入相应的文件夹,然后使用 git branch -a 可以显示远程库中的所有分支,然后在可以通过 git checkout -b 本地分支名 origin/远程库分支名 将远程库的分支克隆到本地。 如下图 git branch 和 git branch -a的区别
- Git merge 默认使用快速合并,合并后会丢掉分支信息。使用 git merge --no-off 可以实现禁用快速合并,这样在合并后使用 git log 可以看到分支信息
- 情形1:如果在A分支分别创建a1 和 a2分支,然后分别在 a1和a2上对同一个文件做修改,最后在A分支上合并两次修改的内容。
情形2: A分支创建a1 分支,在A和a1分支同时都同一个文件修改,然后将a1文件的修改合并到A上
上述两种情况均会出现合并错误,执行合并操作(情形1:git merge a1,git mergea2,情形2:git merge a1)后,需要手动在改动的文件上进行修改,然后才能 git add和git commit 。
情形3:在A分支创建a1,a1对 aa.txt文件进行修改,然后合并到 A分支,A分支添加提交,然后在A分支上创建a2分支,此时a2分支上的aa.txt文件已经包含了a1分支的修改,然后此时再继续在a2分支上修改aa.txt文件,然后合并到A分支上,不会出错。
总结:创建新分支,新分支下的文件实际上将旧分支的所有文件都复制了一遍。
- 分支使用策略:
总结:对于一个项目,只创建一个分支dev,所有人在分支dev上进行修改 操作,当项目完成后,即dev分支修改完成,然后将dev合并到master分支上即可。 每个项目创建一个分支,特定项目的人员在该项目的分支上进行操作修改。
- A分支有a1分支,需要在A分支新建分支b1重修修改文件, a1上的文件修改没有完成,不能add 和 commit ,所以需要暂存文件,此时需要git stash ,然后切换到A分支,重新新建分支b1进行修改其他文件。 分支b1的文件修改完成后,合并到A分支,然后删除b1分支。 重新返回到a1分支,git checkout a1,然后执行 git stash pop (恢复内容,同时删除stash内容,或 git stash apply (如果删除stash内容,则需要另外依据代码 git stash drop)。详细区别见:
注意: a1分支一定要先 git stash 然后再切换到 A分支,否则切换到A分支后,相应的文件已经发生变化。
- 对于没有合并的领先分支的文件,如果需要删除,则git branch -D brancename强制删除即可。
- 对于上传文件中文乱码的问题,使用notepad++转化为 utf-8的格式 ,详情见 https://blog.youkuaiyun.com/qq_35038153/article/details/79807321
- 对分支的远程操作:
1)首先获取远程文件 git clone giturl
2) 在本地创建 克隆远程库的分支到本地 https://blog.youkuaiyun.com/she_lock/article/details/79453484, 保证本地的分支名和远程库的分支名相同。
3) 在本地创建的新的分支进行修改 git add git commit
4)提交本地分支到推送到远程 git push origin 远程库分支名
- 特殊情况下。如果多个人对远程库的某一个分支都进行了修改,在将本地分支推送到远程库时会出现错误。
总结为多人协作使用git的方式:
- 除了通过commit_id确定文件版本状态信息,还可以为每次commit添加tag信息,tag信息和commit_id是绑定在一起的。
1)打标签 git tag tag_name 默认是给最近一次的commit添加tag
2)查看所有标签名 git tag
3) 给具体的以前的一次commit打标签,首先通过 git log 确定 commit_id,然后通过 git tag tag_name commit_id
4)查看特定标签的信息 git show tag_name
5)给标签添加说明 git tag -a tag_name -m "说明" commit_id
6) 删除标签 git tag -d tag_name
7) 推送标签到远程库
- 对开源项目进行修改提交
1)登录github自己的账号,找到相应的开源项目的网址,点击fork ,将该开源项目克隆到自己的github下
2)然后在自己的账号下 git clone 该项目,修改项目后如果希望项目原作者接受自己的修改,可以在github上 pull request自己的修改。
- 将本地库与远程库进行关联时,如果出现已经存在关联的错误,则需要先删除关联。 下图中 gitee.com类似于github.com,可以换成github.com. 使用 gitee.com 可以免费创建私人仓库。
- 代码文件同步到 github 和 gitee两个平台
- 为操作命令 起别名 简化操作命令: