git 学习随笔

==================> HEAD 永远指向分支, 分支指向commit。 其实他们都是指针

2 sourceTree mac上的git GUI
3 当我们提交的时候,可以设置我们的user.name 和user.email 我们可以从如下的3个地方设置它的值
/etc/gitconfig 全局 针对于所有用户 命令: git config --system
~/gitconfig 针对某个用户,不管此用户下的多少项目 git config --global
在某个项目的 .git/config 中 git config --local
我们可以查看 配置。 git config --list
例子:git config --local user.email 583132117@qq.com git config --local user.name 王一品

git add
git status
git log
git commit
git init
git checkout -- 文件名 从暂存区拷贝文件,覆盖当前文件,如果我们使用git add 提交文件到暂存区以后,那么这个命令,并不会使文件发生变化,因为它就是从暂存区拷贝的
作用: 丢弃掉相对于暂存区中最后一次文件添加的文件内容所做的变更 。 它丢弃的修改相当于是。当前工作区 相对于暂存区最后一次添加的修改
这个命令修改的是工作区,参照的是暂存区中最后一次添加的内容

git reset HEAD 文件名
作用: 将之前添加到暂存区(stage,index)的内容 从暂存区移除到工作区
把文件从暂存区移出到工作区,那么暂存区就没有此文件了,修改的是暂存区


git rm 命令:
1 删除一个文件
2 把删除的文件纳入到工作区当中(stage ,index) stage 表示暂存区
3 git reset HEAD 文件名 把当前已经添加到暂存区的文件,从暂存区移出来
4 我们可以使用 git checkout -- 文件名字 来从暂存区恢复此文件,因为这个命令就是从暂存区拷贝文件,覆盖当前工作区的文件,在此刻的语境当中,就相当于是恢复了
这个命令就是从工作区拷贝文件,覆盖到工作区,也即是把工作区的修改丢弃了

====================================================================================================================
Changes to be committed:
出现这个提示的时候,就表示文件已经被纳入了暂存区
就相当于 执行的 git add. 文件由工作区纳入了暂存区


==============================git .gitignore=====================================================================
我们可以把不想被纳入 git版本控制中心的文件写入这个文件中
这个文件需要我们自己创建

===================================对于分支的理解==============================
1 git 当中创建分支,就是创建一个指针,指向当前提交
2 分支, 如 dev, 它实际是一个指针,它指向一个commit
3 HEAD. 并不是指向commit, 它其实是指向 分支 HEAD永远指向当前分支
4 假如我们在dev中修改了文件,然后进行了一次提交,当我们切换到mater时候,进行分支合并,只是master的指针向前移动了,跟dev 指向了同一个提交
5 我们从commit的id就可以看得出来,当我们在dev中新进行一次提交的后,master中是肯定没有这个提交的,但是我们在master中进行git merage 合并dev,此时master就有了此commit,commit id都一样
6 以上证明了 创建分支并不是复制了了文件,只是创建了一个新的指针
7 HEAD在 .git 文件中的HEAD文件保存

===============================合并分支========================================
1 如果可能合并分支的时候 git会使用 fast-forward
2 在这种模式下,删除分支会丢掉分支信息
3 合并的时候 加上 -no-ff 会金庸fast-forward 这样会多出一个commit id


=============================临时保存修改========================================
情景: 当我们在dev1 分支开发时候,还没开发完成,但是此时我们需要在dev2分支开发,需要切换分支,如果我们dev1分支没有进行commit,是不让你切换的,但是未开发完成又无法提交
解决: 这个时候我们可以使用 git stash 命令来临时保存当前工作区的修改 git stash save "说明"
恢复的时候,可以先用 git stash list 来查看列表


==========》 如果我们想要知道某个文件都被谁修改过使用命令
git blame 文件名

============================tag 和 diff=========================================
diff 展示两个文件的不同,并且把它列出来

========git 和github的使用=========================

1 git remote add origin git@github.com:Dream-p-w/Dream-p-w.git 把origin和 git@github.com:Dream-p-w/Dream-p-w.git 映射
2 git push -u origin master 把本地的master 推送到远程的master


========================本地关联远程以后=====================================
当我们修改本地内容以后,再使用git status 会出现如下
On branch master
Your branch is up to date with 'origin/master'. // 我们本地分支,更新时候,会更新到这个分支,其实 origin/masger 也是本机的一个分支 up-to-date 翻译为同步的,最新的 两个意思都有可能

Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)

modified: t1

no changes added to commit (use "git add" and/or "git commit -a")

使用git branch -a 就会列出来本地所有分支 此时就可以看到origin/master
git branch -a -v 会列出来分支最后一次提交的commit信息

=========================> git push
1 把本地的更新提交到远程
2 同时更新 origin/master 分支(分支就是指针)指向的commit
3 origin/master 确实是一个分支,不过我们不能修改,它由git 维护, 我们本地的master分支,都是跟origin/master做比较的
4 git push --set-upstream origin 本地分支名:远程分支名
推送本地分支到origin,如果origin没有,则创建此分支

git push -u origin 本地分支名 把本地分支 推送到远程,并且在远程创建此分支

git push 完整写法
git push origin 本地分支:远程分支 本地分支推送到远程分支

 

========================》 git pull
1 抓取的时候,如果可以把抓取来的新分支合并了,就会自动合并,如果不能需要手动合并
2 等于 git fetch + git merge
3 完整命令: git pull origin 远程分支:本地分支


======================fast forward
1 分支(指针) 可以直接由一个commit移动到另外一个commit,并不需要什么合并,我们称之为 fast forward
2 无法快进的情况: 张三和李四修改了同一个文件,然后他们都提交了


=====================git add
1 把未追踪的文件,纳入到版本控制当中
2 把已经纳入版本控制的文件,由工作 区添加到缓存区中
3 冲突修改完了以后,来表示此文件的冲突已经被解决了


======================git checkout
1 git checkout -b 本地分支名 origin/远程分支名 在本地新创建一个分支,和origin中的远程分支对应(追逐远程分支)
git checkout -b [分支名] [远程名]/[分支名]


=======================设置一个已经存在的本地分支跟踪远程一个已经存在的分支
git branch --set-upstream-to=origin/远程分支名 本地分支名
在使用这个命令之前,远程分支要先在本地使用 git branch -av 查得到,如果查不到,就需要使用git pull 来抓取远程上的所有分支,然后再跟踪
git branch -vv 来查看本地分支追踪的远程分支信息

======================git 当中重命名远程分支
只有删掉远程分支 使用 git push --set-upstream origin 空格:远程分支名 使用一个空的分支,去覆盖远程分支,也就是删了
2 在本地新建一个分支,然后再推送给远程

============================一些概念
1 HEAD 标记 : HEAD文件是一个指向你当前所在分支的引用标识符,并且该文件内不包含SHA-1值,而是一个指向另外一个引用的指针
2 当执行 git commit 命令的时候,就会创建一个commit对象,并且将这个commit对象的parent指针设置为HEAD所指向引用的SHA-1值
3 我们对于HEAD所做的任何修改(通过命令),都会被 git reflog 完整记录下来
4 在缺省情况下 refspect 会被git remote add 命令所生成, git 会获取远端 refs/headers下的所有引用,并且将它们写到本地的refs/remotes/origin目录 下


============================git rebase
rebase命令会修改你的提交历史commit,如果你修改了以后,别人如果拉取了,就会和别人不同,所以我们不能使用rebase合并远程分支。会造成commit混乱
1 git rebase 可以合并两个分支
2 rebase过程也会出现冲突
3 手动解决冲突以后,使用git add 然后执行 git rebase --continue
当我们解决冲突以后,调用git rebase --continue 剩余部分就会继续合并
4 任何时候都可以使用 git rebase --abort 来终止合并,此时会回到执行rebase之前
注意:
不要对master使用rebase
执行rebase的分支都是本地分支,没有推送到远程版本库

转载于:https://www.cnblogs.com/wangpipi/p/11196933.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值