Git学习笔记

Git学习笔记

初步设置

git config --global user.name "Your Name"   //配置用户名
git config --global user.email "email@example.com"  //配置邮箱

创建版本库

mkdir BruteDemo
cd BruteDemo
pwd
git init    //把这个目录变成Git可以管理的仓库

将文件添加到仓库

git add ssh_brute.py    //将文件ssh_brute.py添加到仓库
git commit -m "ssh brute demo"  //commit只会提交已经add的文件,-m后面输入的是本次提交的说明   

获取仓库最新状态

$ git status
位于分支 master
尚未暂存以备提交的变更:
  (使用 "git add <文件>..." 更新要提交的内容)
  (使用 "git checkout -- <文件>..." 丢弃工作区的改动)

	修改:     ssh_brute.py

修改尚未加入提交(使用 "git add" 和/或 "git commit -a")

查看修改内容,#git test是修改内容

$ git diff ssh_brute.py
diff --git a/ssh_brute.py b/ssh_brute.py
index e273cfa..80dec18 100644
--- a/ssh_brute.py
+++ b/ssh_brute.py
@@ -1,4 +1,5 @@
 #coding=utf-8
+#git test
 from pexpect import pxssh
 
 def coon(hostname,user,password):

版本回退

版本1:提交ssh_brute.py

版本2:在ssh_brute.py中添加一行#git test

查看commit历史版本

$ git log
commit 777cad51cfb2b0001faf73c82bcd146ffc7ba4af
Author: mark-zh <mark.xiaoyuer@gmail.com>
Date:   Thu Jun 20 11:01:45 2019 +0800

    change test

commit b7415ca096c5eb12b94506e71c22343f2f3c1617
Author: mark-zh <mark.xiaoyuer@gmail.com>
Date:   Thu Jun 20 10:42:15 2019 +0800

    ssh brute demo

简化输出

git log --pretty=oneline

回退到上一个版本,可以cat文件查看是否成功

$ git reset --hard HEAD^
HEAD 现在位于 b7415ca ssh brute demo

回退到指定版本,git reset --hard id,版本号写前几位即可

$ git reset --hard 777ca
HEAD 现在位于 777cad5 change test
$ git log --pretty=oneline
777cad51cfb2b0001faf73c82bcd146ffc7ba4af change test
b7415ca096c5eb12b94506e71c22343f2f3c1617 ssh brute demo

查看版本回退记录

$ git reflog
777cad5 HEAD@{0}: reset: moving to 777ca
b7415ca HEAD@{1}: reset: moving to HEAD^
777cad5 HEAD@{2}: commit: change test
b7415ca HEAD@{3}: commit (initial): ssh brute demo

工作区和暂存区

工作区:如BruteDemo文件夹就是一个工作区。

版本库:工作区有一个隐藏目录.git,这个不算工作区,而是Git版本库。

Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。

Git工作原理

第一步git add添加文件,把文件修改添加到暂存区。

第二步git commit提交更改,把暂存区的所有内容提交到当前分支。

创建Git版本库时,Git自动为我们创建了唯一一个master分支,git commit就是往master分支上提交更改。

管理修改

撤销修改

git checkout -- file
git reset HEAD file

删除文件

git del test.txt
git commit -m "del test.txt"

误删恢复

git checkout -- test.txt 

远程仓库

创建SSH key

ssh-keygen -t rsa -C "youremail@example.com"

然后登录github,的设置,Settings-- SSH keys,添加id_rsa.pub就ok

添加远程仓库
登录github,点击new repository,本地关联远程库

git remote add origin git@github.com:mark-zh/BruteDemo.git

第一次把本地库的所有内容推送到远程库

git push -u origin master

以后的每次推送

git push origin master 

从远程仓库克隆

git clone target

分支管理

查看分支:git branch*表示当前分支
创建分支:git branch name
切换分支:git checkout name
创建+切换分支:git checkout -b name
合并某分支到当前分支:git merge name
删除分支:git branch -d name

多人协作

查看远程库信息

git remote
git remote -v   //显示详细信息

抓取分支

git clone  git@github.com:mark-zh/program.git

创建开发分支

git checkout -b dev origin/dev

推送分支,把该分支上的所有本地提交推送到远程库。推送时,要指定本地分支

git push origin master
git push origin dev     //推送dev分支到远程库

提交冲突时,执行git pull获取最新origin/dev,本地合并,解决冲突,重新push

git pull失败解决:原因是没有指定本地dev分支与远程origin/dev分支的链接,根据提示,设置devorigin/dev的链接

git branch --set-upstream-to=origin/dev dev

报错问题解决

  • 当前分支的最新提交落后于其对应的远程分支
error: 无法推送一些引用到 'git@github.com:mark-zh/BruteDemo.git'
提示:更新被拒绝,因为您当前分支的最新提交落后于其对应的远程分支。
提示:再次推送前,先与远程变更合并(如 'git pull ...')。

解决办法:先从远程库fetch到更新再和本地库合并

git fetch origin    //获取远程更新
git merge origin/master     //把更新的内容合并到本地分支
posted @ 2019-06-20 15:24  mark-zh  阅读(184)  评论(0编辑  收藏  举报