git学习笔记

  • 直接在 建立的仓库下打开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命令

 

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分支后,相应的文件已经发生变化。

 

 

  • 对分支的远程操作: 

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两个平台

 

 

  • 为操作命令 起别名  简化操作命令:

内容概要:论文提出了一种基于空间调制的能量高效分子通信方案(SM-MC),将传输符号分为空间符号和浓度符号。空间符号通过激活单个发射纳米机器人的索引来传输信息,浓度符号则采用传统的浓度移位键控(CSK)调制。相比现有的MIMO分子通信方案,SM-MC避免了链路间干扰,降低了检测复杂度并提高了性能。论文分析了SM-MC及其特例SSK-MC的符号错误率(SER),并通过仿真验证了其性能优于传统的MIMO-MC和SISO-MC方案。此外,论文还探讨了分子通信领域的挑战、优势及相关研究工作,强调了空间维度作为新的信息自由度的重要性,并提出了未来的研究方向和技术挑战。 适合人群:具备一定通信理论基础,特别是对纳米通信和分子通信感兴趣的科研人员、研究生和工程师。 使用场景及目标:①理解分子通信中空间调制的工作原理及其优势;②掌握SM-MC系统的具体实现细节,包括发射、接收、检测算法及性能分析;③对比不同分子通信方案(如MIMO-MC、SISO-MC、SSK-MC)的性能差异;④探索分子通信在纳米网络中的应用前景。 其他说明:论文不仅提供了详细的理论分析和仿真验证,还给出了具体的代码实现,帮助读者更好地理解和复现实验结果。此外,论文还讨论了分子通信领域的标准化进展,以及未来可能的研究方向,如混合调制方案、自适应调制技术和纳米机器协作协议等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值